// 定义角色
const ROLES = {
  TRANSPORT_ADMIN: "TRANSPORT_ADMIN", // 运管行管
  DANGEROUS_GOODS_ADMIN: "DANGEROUS_GOODS_ADMIN", // 危货行管
  DANGEROUS_GOODS_ENTERPRISE: "DANGEROUS_GOODS_ENTERPRISE", // 危货企业
  LOADING_UNLOADING_ENTERPRISE: "LOADING_UNLOADING_ENTERPRISE", // 装卸货企业
  TRANSPORT_ENTERPRISE: "TRANSPORT_ENTERPRISE", // 运管企业
  DANGEROUS_GOODS_OPERATOR: "DANGEROUS_GOODS_OPERATOR", // 危货企业操作员
  DRIVER_ESCORT: "DRIVER_ESCORT", // 驾押人员
  OTHER_INDIVIDUAL: "OTHER_INDIVIDUAL", // 其他个人
};

// 定义菜单项
const MENU_ITEMS = {
  SEARCH: "search",
  SCAN: "scan",
  CERTIFICATE: "certificate",
  REMINDER: "reminder",
  MY_BUSINESS: "myBusiness",
  COMPLAINT: "complaintHandling",
  DANGEROUS_GOODS: "dangerousGoods",
  GOVERNMENT: "government",
  TRANSPORTATION: "transportation",
  DRIVER_TRAINING: "driverTraining",
  INSPECTION: "inspection",
  ENTERPRISE: "enterprise",
  PERSONAL: "personal",
  BUSINESS_TAB: "bottomIndex",
  STATISTICAL_QUERY: "statisticalQuery",
  ROUTE_QUERY: "routeQuery",
  COMMON_FUNCTIONS: "commonFunctions",
  PRACTITIONERS: "practitioners",
  MONITORING_MANAGEMENT: "monitoringManagement",
  WORK_SIGNBOARD_AUDIT: "workSignboardAudit",
  OPERATING_VEHICLES: "operatingVehicles",
  BUSINESS_OPERATORS: "businessOperators",
  DYNAMIC_SUPERVISION: "dynamicSupervision",
  SIGNBOARD_AUDIT: "signboardAudit",
  ABOUT: "about",
  MY_INFORMATION: "myInformation",
  AFFILIATION: "affiliation",
  SUPERVISION_INSPECTION: "supervisionInspection",
  EXIT: "exit",
};

// 定义危货服务的三级菜单
const DANGEROUS_GOODS_SUB_MENU = {
  DANGEROUS_GOODS_MANAGEMENT: "dangerousGoodsManagement", // 危货管理
  TASK_INFORMATION: "taskInformation", // 任务信息
  BUSINESS_MANAGEMENT: "businessManagement", // 业务管理
};

// 定义政务服务的三级菜单
const GOVERNMENT_SERVICES_SUB_MENU = {
  OPERATING_VEHICLES: "operatingVehicles", // 营运车辆
  BUSINESS_OPERATORS: "businessOperators", // 经营业户
  PRACTITIONERS: "practitioners", // 从业人员
  STATISTICAL_QUERY: "statisticalQuery", // 统计查询
  ROUTE_QUERY: "routeQuery", // 线路查询
  SIGNBOARD_AUDIT: "signboardAudit", // 标志牌审核
  SUPERVISION_INSPECTION: "supervisionInspection", // 监督检查
  MONITORING_MANAGEMENT: "monitoringManagement", // 监测管理
  DYNAMIC_SUPERVISION: "dynamicSupervision", // 动态监管
  COMPLAINT_HANDLING: "complaintHandling", // 问题投诉
};

// 定义运政服务的二级菜单
const TRANSPORTATION_SUB_MENU = {
  PERSON_SCORE: "personScore", // 人员记分
  CERTIFICATION_CHECK: "certificationCheck", // 证件核验
  ANNUAL_CHECK: "annualCheck", // 年审核验
  ANNUAL_INQUIRY: "annualInquiry", // 年审查询
  PERSON_INFO: "personInfo", // 人员信息
  VEHICLE_INQUIRY: "vehicleInquiry", // 车辆查询
  ROAD_BUSINESS: "roadBusiness", // 道路业户
};

// 定义每个角色的菜单权限
const roleMenuPermissions = {
  [ROLES.TRANSPORT_ADMIN]: [
    MENU_ITEMS.SEARCH, // 关键词搜索
    MENU_ITEMS.SCAN, // 扫一扫
    MENU_ITEMS.CERTIFICATE, // 电子证照
    MENU_ITEMS.REMINDER, // 提醒服务
    MENU_ITEMS.DANGEROUS_GOODS, // 危货服务
    MENU_ITEMS.GOVERNMENT, // 政务服务
    MENU_ITEMS.BUSINESS_TAB, // 添加办事功能
  ],
  [ROLES.DANGEROUS_GOODS_ADMIN]: [
    MENU_ITEMS.SEARCH, // 关键词搜索
    MENU_ITEMS.SCAN, // 扫一扫
    MENU_ITEMS.CERTIFICATE, // 电子证照
    MENU_ITEMS.REMINDER, // 提醒服务
    MENU_ITEMS.DANGEROUS_GOODS, // 危货服务
    MENU_ITEMS.GOVERNMENT, // 政务服务
    MENU_ITEMS.BUSINESS_TAB, // 添加办事功能
  ],
  [ROLES.DANGEROUS_GOODS_ENTERPRISE]: [
    MENU_ITEMS.SEARCH, // 关键词搜索
    MENU_ITEMS.SCAN, // 扫一扫
    MENU_ITEMS.CERTIFICATE, // 电子证照
    MENU_ITEMS.REMINDER, // 提醒服务
    MENU_ITEMS.MY_BUSINESS, // 我的业务
    MENU_ITEMS.TRANSPORTATION, // 运政服务
    MENU_ITEMS.DRIVER_TRAINING, // 驾培服务
    MENU_ITEMS.INSPECTION, // 检测服务
    MENU_ITEMS.ENTERPRISE, // 企业服务
    MENU_ITEMS.DANGEROUS_GOODS, // 危货服务
    TRANSPORTATION_SUB_MENU.PERSON_SCORE, // 人员记分
    TRANSPORTATION_SUB_MENU.CERTIFICATION_CHECK, // 证件核验
    TRANSPORTATION_SUB_MENU.ANNUAL_CHECK, // 年审核验
    TRANSPORTATION_SUB_MENU.ANNUAL_INQUIRY, // 年审查询
    MENU_ITEMS.BUSINESS_TAB, // 添加办事功能
  ],
  [ROLES.LOADING_UNLOADING_ENTERPRISE]: [
    MENU_ITEMS.SEARCH, // 关键词搜索
    MENU_ITEMS.SCAN, // 扫一扫
    MENU_ITEMS.CERTIFICATE, // 电子证照
    MENU_ITEMS.REMINDER, // 提醒服务
    MENU_ITEMS.MY_BUSINESS, // 我的业务
    MENU_ITEMS.TRANSPORTATION, // 运政服务
    MENU_ITEMS.DRIVER_TRAINING, // 驾培服务
    MENU_ITEMS.INSPECTION, // 检测服务
    MENU_ITEMS.ENTERPRISE, // 企业服务
    MENU_ITEMS.DANGEROUS_GOODS, // 危货服务
    TRANSPORTATION_SUB_MENU.PERSON_SCORE, // 人员记分
    TRANSPORTATION_SUB_MENU.CERTIFICATION_CHECK, // 证件核验
    TRANSPORTATION_SUB_MENU.ANNUAL_CHECK, // 年审核验
    TRANSPORTATION_SUB_MENU.ANNUAL_INQUIRY, // 年审查询
    MENU_ITEMS.BUSINESS_TAB, // 添加事功能
  ],
  [ROLES.TRANSPORT_ENTERPRISE]: [
    MENU_ITEMS.SEARCH, // 关键词搜索
    MENU_ITEMS.SCAN, // 扫一扫
    MENU_ITEMS.CERTIFICATE, // 电子证照
    MENU_ITEMS.REMINDER, // 提醒服务
    MENU_ITEMS.MY_BUSINESS, // 我的业务
    MENU_ITEMS.TRANSPORTATION, // 运政服务
    MENU_ITEMS.DRIVER_TRAINING, // 驾培服务
    MENU_ITEMS.INSPECTION, // 检测服务
    MENU_ITEMS.ENTERPRISE, // 企业服务
    TRANSPORTATION_SUB_MENU.PERSON_SCORE, // 人员记分
    TRANSPORTATION_SUB_MENU.CERTIFICATION_CHECK, // 证件核验
    TRANSPORTATION_SUB_MENU.ANNUAL_CHECK, // 年审核验
    TRANSPORTATION_SUB_MENU.ANNUAL_INQUIRY, // 年审查询
    TRANSPORTATION_SUB_MENU.PERSON_INFO, // 人员信息
    TRANSPORTATION_SUB_MENU.VEHICLE_INQUIRY, // 车辆查询
    TRANSPORTATION_SUB_MENU.ROAD_BUSINESS, // 道路业户
    // 注意：这里没有包含 tabbar 办事功能
  ],
  [ROLES.DANGEROUS_GOODS_OPERATOR]: [
    MENU_ITEMS.SEARCH, // 关键词搜索
    MENU_ITEMS.SCAN, // 扫一扫
    MENU_ITEMS.CERTIFICATE, // 电子证照
    MENU_ITEMS.REMINDER, // 提醒服务
    MENU_ITEMS.MY_BUSINESS, // 我的业务
    MENU_ITEMS.DANGEROUS_GOODS, // 危货服务
    MENU_ITEMS.TRANSPORTATION, // 运政服务
    TRANSPORTATION_SUB_MENU.PERSON_SCORE, // 人员记分
    TRANSPORTATION_SUB_MENU.CERTIFICATION_CHECK, // 证件核验
    TRANSPORTATION_SUB_MENU.ANNUAL_CHECK, // 年审核验
    TRANSPORTATION_SUB_MENU.ANNUAL_INQUIRY, // 年审查询
    MENU_ITEMS.BUSINESS_TAB, // 添加办事功能
  ],
  [ROLES.DRIVER_ESCORT]: [
    MENU_ITEMS.SEARCH, // 关键词搜索
    MENU_ITEMS.CERTIFICATE, // 电子证照
    MENU_ITEMS.REMINDER, // 提醒服务
    MENU_ITEMS.COMPLAINT, // 问题投诉
    MENU_ITEMS.DANGEROUS_GOODS, // 危货服务
    MENU_ITEMS.PERSONAL, // 个人服务
    MENU_ITEMS.TRANSPORTATION, // 运政服务
    MENU_ITEMS.DRIVER_TRAINING, // 驾培服务
    MENU_ITEMS.INSPECTION, // 检测服务
    TRANSPORTATION_SUB_MENU.PERSON_SCORE, // 人员记分
    TRANSPORTATION_SUB_MENU.CERTIFICATION_CHECK, // 证件核验
    TRANSPORTATION_SUB_MENU.ANNUAL_CHECK, // 年审核验
    TRANSPORTATION_SUB_MENU.ANNUAL_INQUIRY, // 年审查询
    MENU_ITEMS.BUSINESS_TAB, // 添加办事功能
  ],
  [ROLES.OTHER_INDIVIDUAL]: [
    MENU_ITEMS.SEARCH, // 关键词搜索
    MENU_ITEMS.CERTIFICATE, // 电子证照
    MENU_ITEMS.REMINDER, // 提醒服务
    MENU_ITEMS.PERSONAL, // 个人服务
    MENU_ITEMS.TRANSPORTATION, // 运政服务
    MENU_ITEMS.DRIVER_TRAINING, // 驾培服务
    MENU_ITEMS.INSPECTION, // 检测服务
    TRANSPORTATION_SUB_MENU.PERSON_SCORE, // 人员记分
    TRANSPORTATION_SUB_MENU.CERTIFICATION_CHECK, // 证件核验
    TRANSPORTATION_SUB_MENU.ANNUAL_CHECK, // 年审核验
    TRANSPORTATION_SUB_MENU.ANNUAL_INQUIRY, // 年审查询
    TRANSPORTATION_SUB_MENU.PERSON_INFO, // 人员信息
    TRANSPORTATION_SUB_MENU.VEHICLE_INQUIRY, // 车辆查询
    TRANSPORTATION_SUB_MENU.ROAD_BUSINESS, // 道路业户
  ],
};

// 辅助函数：确保输入是数组
function ensureArray(input) {
  return Array.isArray(input) ? input : [];
}

// 检查用户是否有特定菜单项的权限
export function hasMenuPermission(perCodeList, menuItem) {
  return Array.isArray(perCodeList) && perCodeList.includes(menuItem);
}

// 获取用户的所有菜单权限
export function getUserMenuPermissions(perCodeList) {
  return Array.isArray(perCodeList) ? perCodeList : [];
}

// 获取所有可能的菜单项
export function getAllMenuItems() {
  return Object.values(MENU_ITEMS);
}

// 获取所有角色
export function getAllRoles() {
  return Object.values(ROLES);
}

// 获取危货服务的三级菜单
export function getDangerousGoodsSubMenu(role) {
  return Object.values(DANGEROUS_GOODS_SUB_MENU);
}

// 获取政务服务的三级菜单
export function getGovernmentServicesSubMenu(role) {
  return Object.values(GOVERNMENT_SERVICES_SUB_MENU);
}

// 导出所有常量和函数
export {
  ROLES,
  MENU_ITEMS,
  DANGEROUS_GOODS_SUB_MENU,
  GOVERNMENT_SERVICES_SUB_MENU,
  TRANSPORTATION_SUB_MENU,
};
